package com.sale.system.service;


import com.sale.common.core.domain.R;
import com.sale.common.mybatis.core.page.PageQuery;
import com.sale.common.mybatis.core.page.TableDataInfo;
import com.sale.system.api.domain.dto.FinishAndRawDto;
import com.sale.system.domain.MaterialFinished;
import com.sale.system.domain.dto.MaterialFinishedDto;
import com.sale.system.domain.dto.ProjectRecursionDto;
import com.sale.system.domain.vo.MaterialFinishedVo;

import java.util.List;

/**
 * @Description 成品信息
 * @Param
 * @Date
 * @Author hl
 **/
public interface IMaterialFinishedService {
    /**
     * 新增成品信息
     */
    int insertFinished(MaterialFinishedVo materialFinished) throws Exception;

    /**
     * 删除成品信息
     */
    int deleteFinishedById(String materialId) throws Exception;


    /**
     * 查询单个成品信息
     */
    MaterialFinishedDto selectFinishedById(long materialId);

    /**
     * 修改成品信息
     */
    int updateMaterialFinishedEdit(MaterialFinishedVo materialFinished) throws Exception;


    /**
     * 树结构
     */
    List<ProjectRecursionDto> selectChildrenFinishedThe();

    /**
     * 根据物料编码查询详情（成品信息）
     * @param materialCode
     * @return
     */
    MaterialFinished selectMaterialFinishedMaterialCode(String materialCode);

    /**
     * 查询成品信息
     */
    TableDataInfo<MaterialFinishedDto> selectFinishedList(MaterialFinishedVo materialFinished, PageQuery pageQuery);

    /**
     * 根据物料编码查询成品信息
     * @param materialCode
     * @return
     */
    MaterialFinishedDto getByFinishedMaterialCode(String materialCode);

    /**
     * 根据编码获取物料信息（财务成品调整模块使用）
     */
    FinishAndRawDto getFinishAndRaw(String materialCode);

    /**
     * 成品冻结
     */
    int updateEditFreeze(Long materialId);

    /**
     * 成品解冻
     */
    int updateEditThaw(Long materialId);
}
